


public enum GraphSubgroup {
	// Gender subgroups
	Male(0) {

		@Override
		public String label() {
			return "Male";
		}

		@Override
		public String value() {
			return "Male";
		}
	},
	Female(1) {
		@Override
		public String label() {
			return "Female";
		}

		@Override
		public String value() {
			return "Female";
		}

	},
	// speeding subgroup
	Speeding(2) {		
		@Override
		public String label() {
			return "Speeding";
		}

		@Override
		public String value() {
			return "Speeding";
		}

	},
	NotSpeeding(38) {		
		@Override
		public String label() {
			return "Not Speeding";
		}

		@Override
		public String value() {
			return "Not Speeding";
		}

	},
	// dark, day, dusk, unknown, light subgroups
	Dark(3) {
		@Override
		public String label() {
			return "Dark";
		}

		@Override
		public String value() {
			return "Dark";
		}

	},
	Dawn(4) {
		@Override
		public String label() {
			return "Dawn";
		}

		@Override
		public String value() {
			return "Dawn";
		}

	},
	Daylight(5) {
		@Override
		public String label() {
			return "Daylight";
		}

		@Override
		public String value() {
			return "Daylight";
		}

	},
	Dusk(6) {
		@Override
		public String label() {
			return "Dusk";
		}

		@Override
		public String value() {
			return "Dusk";
		}

	},
	// Hour subgroups
	Zeroto6(7) {
		@Override
		public String label() {
			return "12:00AM-5:59AM";
		}

		@Override
		public String value() {
			return "12:00AM-5:59AM";
		}
	},	
	Sixto12(8) {
		@Override
		public String label() {
			return "6:00AM-11:59AM";
		}

		@Override
		public String value() {
			return "6:00AM-11:59AM";
		}
	},
	Twelveto6(9) {
		@Override
		public String label() {
			return "12:00PM-5:59PM";
		}

		@Override
		public String value() {
			return "12:00PM-5:59PM";
		}
	},
	SixtoMidnight(10) {
		@Override
		public String label() {
			return "6:00PM-11:59PM";
		}

		@Override
		public String value() {
			return "6:00PM-11:59PM";
		}
	},
	UnknownTime(-2) {
		@Override
		public String label() {
			return "Unknown Time";
		}

		@Override
		public String value() {
			return "Unknown";
		}
	},
	// Visibility sub groups
	ClearVis(11){
		@Override
		public String label() {
			return "Clear Visibility";
		}

		@Override
		public String value() {
			return "Clear";
		}
	},
	ObscureVis(12){
		@Override
		public String label() {
			return "Obscure Visibility";
		}

		@Override
		public String value() {
			return "Obscure Visibility";
		}
	},
	OtherVis(13){
		@Override
		public String label() {
			return "Other Visibility";
		}

		@Override
		public String value() {
			return "Other";
		}
	},
	RainVis(14){
		@Override
		public String label() {
			return "Rain Visibility";
		}

		@Override
		public String value() {
			return "Rain";
		}
	},
	SevereCrosswindsVis(15){
		@Override
		public String label() {
			return "Severe Crosswinds";
		}

		@Override
		public String value() {
			return "Severe Crosswinds";
		}
	},
	SleetHailVis(16){
		@Override
		public String label() {
			return "Sleet/Hail";
		}

		@Override
		public String value() {
			return "Sleet/Hail";
		}
	},
	SnowVis(17){
		@Override
		public String label() {
			return "Snow";
		}

		@Override
		public String value() {
			return "Snow";
		}
	},
	// vehicle sub catagories
	HatchbackVehicle(18){
		@Override
		public String label() {
			return "Hatchback";
		}

		@Override
		public String value() {
			return "Hatchback";
		}
	},
	SedanVehicle(19){
		@Override
		public String label() {
			return "Sedan";
		}

		@Override
		public String value() {
			return "Sedan";
		}
	},
	OtherVehicle(20){
		@Override
		public String label() {
			return "Other Vehicle";
		}

		@Override
		public String value() {
			return "Others";
		}
	},
	SUVVehicle(21){
		@Override
		public String label() {
			return "SUV";
		}

		@Override
		public String value() {
			return "SUV";
		}
	},
	VanVehicle(22){
		@Override
		public String label() {
			return "Van";
		}

		@Override
		public String value() {

			return "Van";
		}
	},
	WagonVehicle(23){
		@Override
		public String label() {
			return "Wagon";
		}

		@Override
		public String value() {
			return "Wagon";
		}
	},
	// alcohol subgroups
	Alcohol(24){
		@Override
		public String label() {
			return "Alcohol";
		}

		@Override
		public String value() {

			return "Drunk Driving";
		}
	},
	NonAlcohol(25){
		@Override
		public String label() {
			return "Non-Alcohol";
		}

		@Override
		public String value() {

			return "No Alcohol Involvement";
		}
	},
	NotReportedAlcohol(26){
		@Override
		public String label() {
			return "Not Reported Alcohol";
		}

		@Override
		public String value() {

			return "Not Reported";
		}
	},
	// drugs subgrouping
	Drugs(27){
		@Override
		public String label() {
			return "Drugs";
		}

		@Override
		public String value() {

			return "Drugs Involved";
		}
	},
	NotDrugs(28){
		@Override
		public String label() {
			return "No Drugs";
		}

		@Override
		public String value() {

			return "Drugs Not Involved";
		}
	},
	NotReportedDrugs(29){
		@Override
		public String label() {
			return "Drugs Not Reported";
		}

		@Override
		public String value() {

			return "Drugs Not Reported";
		}
	},
	UnknownDrugs(30){
		@Override
		public String label() {
			return "Drugs Unknown";
		}

		@Override
		public String value() {
			return "Drugs Involved";
		}
	},
	// age subgrouping
	ZeroTo20Age(31){
		@Override
		public String label() {
			return "0 to 19 yr";
		}

		@Override
		public String value() {
			return "0<age<20";
		}
	},
	TwentyTo40Age(32){
		@Override
		public String label() {
			return "20 to 39 yr";
		}

		@Override
		public String value() {
			return "20<age<40";
		}
	},
	FortyTo60Age(33){
		@Override
		public String label() {
			return "40 to 59 yr";
		}

		@Override
		public String value() {
			return "40<age<60";
		}
	},
	SixtyTo80Age(33){
		@Override
		public String label() {
			return "60 to 79 yr";
		}

		@Override
		public String value() {
			return "60<age<100";
		}
	},
	EightyTo100Age(33){
		@Override
		public String label() {
			return "80 to 100 yr";
		}

		@Override
		public String value() {
			return "80<age<100";
		}
	},
	Fatal(34){
		@Override
		public String label() {
			return "Fatal Crashes";
		}

		@Override
		public String value() {
			// TODO Auto-generated method stub
			return "Fatal Crashes";
		}
	},
	NonFatal(35){
		@Override
		public String label() {
			return "Non-Fatal Crashes";
		}

		@Override
		public String value() {
			return "Non-Fatal Crashes";
		}
	},
	// day subgroup
	Weekend(36){
		@Override
		public String label() {
			return "Weekend";
		}

		@Override
		public String value() {
			return "Weekend";
		}
	},
	Weekday(37){
		@Override
		public String label() {
			return "Weekday";
		}

		@Override
		public String value() {
			return "Weekday";
		}
	},
	;
	private int value;

	public abstract String value();

	public abstract String label();
	

	
	private GraphSubgroup(int value) {

		this.value = value;

	}
}
